#ifndef POVOBJECT_H
#define POVOBJECT_H

#include "../../geom/Point3D.h"
#include "../../geom/Vector3D.h"
#include "../../geom/Triangle.h"
#include "../../geom/Octree.h"
#include "../../geom/PolyMesh.h"
#include "../../geom/PolyModel.h"

#include <string>
#include <vector>
#include <memory>

class AOProgressDialog;

using namespace std;
using namespace geom;

namespace POVGeom
{
    class POVObject : public geom::PolyModel
    {
        public:
			POVObject();
			POVObject(const PolyModel& pm);

			BBox getObjectBBox();
			
			void generateAO(Octree<Triangle> * oct, int numRays, AOProgressDialog * progress);
			void setPartColor(string name, float * color);
			~POVObject();

			auto_ptr<PolyModel> convertToPolyModel() const;
    };
}
#endif
